home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1995…tember: Reference Library / Dev.CD Sep 95 RL / Dev.CD Sep 95 RL.toast / mac / Technical Documentation / develop / develop Issue 19 code / SimpliFace_V2 / Sources / ScriptableObjects.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-05-01  |  4.9 KB  |  184 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        ScriptableObjects.h
  3.  
  4.     Contains:    Script handling & OSA interface
  5.  
  6.  
  7.     Developed by:
  8.  
  9.     Paul G Smith (commstalk hq & Full Moon Software, Inc)
  10.  
  11.     you can leave messages at (UK): 0727 844232; (US): 408 253 7199
  12.     BUT I prefer to be contacted by e-mail
  13.     AppleLink:     COMMSTALK.HQ
  14.     Internet:     COMMSTALK.HQ@applelink.apple.com
  15.  
  16.     "SimpliFace2" Sample code to accompany develop article
  17.     on techniques for controlling script inheritance.
  18.     
  19.     
  20.  
  21.  
  22.     
  23.  
  24. */
  25.  
  26.  
  27. #ifndef __SCRIPTOBJECTS__
  28. #define __SCRIPTOBJECTS__
  29.  
  30.  
  31. #ifndef __APPLEEVENTS__
  32. #include "AppleEvents.h"
  33. #endif
  34.  
  35. #ifndef __PASCALSTRING__
  36. #include <PascalString.h>
  37. #endif
  38.  
  39. #ifndef __AERegistry__
  40. #include <AERegistry.h>
  41. #endif
  42.  
  43. #ifndef __OSA__
  44. #include <OSA.h>
  45. #endif
  46.  
  47. #ifndef __LISTOFLONGS__
  48. #include "ListOfLongs.h"
  49. #endif
  50.  
  51.  
  52.  
  53.  
  54. class TScriptableObject : HandleObject
  55. {
  56. public:
  57.     // Our constructor & destructor
  58.                     TScriptableObject(TScriptableObject* curParent = NULL);
  59.     virtual         ~TScriptableObject();
  60.  
  61.     virtual  OSErr CountElements (DescType desiredClass,
  62.                                         long *result);
  63.                                         
  64.     virtual  OSErr CompareWith   (DescType comparisonOperator,
  65.                                         const TScriptableObject *objToCompare,
  66.                                         Boolean *result);
  67.     
  68.     virtual  OSErr ResolveContainer    (TScriptableObject **theContainerObj);
  69.                                         
  70.     virtual  OSErr ResolveElementByName(DescType desiredClass,
  71.                                         CStr255& nameStr,
  72.                                         TScriptableObject **theResultObj);
  73.                                         
  74.     virtual  OSErr ResolveElementByIndex(DescType desiredClass,
  75.                                         short theIndex,
  76.                                         TScriptableObject **theResultObj);
  77.     
  78.     virtual  OSErr OpenObject  (void);
  79.                                         
  80.     virtual  OSErr CloseObject  (void);
  81.  
  82.     virtual  OSErr GetData  (AEDesc *result);
  83.                                                 
  84.     virtual  OSErr SetData  (const AEDesc *theData);    
  85.                                         
  86.     virtual  OSErr GetProperty  (DescType propertyID, DescType wantType, AEDesc *result);
  87.                                                 
  88.     virtual  OSErr SetProperty  (DescType propertyID, const AEDesc *theData);    
  89.  
  90.     virtual     OSErr CreateNewElement    (DescType desiredClass,
  91.                                         DescType position,
  92.                                         AEDesc *theData,
  93.                                         AERecord *theProperties,
  94.                                         TScriptableObject *theContainerObj,
  95.                                         TScriptableObject **theNewObj);
  96.     
  97.     virtual  OSErr DeleteObject  (void);
  98.                                         
  99.     virtual  OSErr GetObjectSpecifier  (AEDesc *result);
  100.     virtual  OSAID GetObjectSpecifierAsScriptValue  (void);
  101.                                         
  102.     virtual  OSErr GetTargetObjectSpecifier  (EventRecord& theEvent, AEDesc *result);
  103.     
  104.     virtual     void    FixUpScriptReferences(TScriptableObject* theParent);
  105.  
  106.     virtual  OSAError             SetCurParent(TScriptableObject* theParent = NULL);
  107.  
  108.     virtual  OSAError            StartUsing(TScriptableObject* newParent, TScriptableObject* &oldParent);
  109.             //    start using script (sets parent of script)
  110.             
  111.     virtual  OSAError            StopUsing(TScriptableObject* oldParent);
  112.             //    stop using script (resets parent of script to previous value)
  113.             
  114.     virtual  TScriptableObject*        GetParentObj();
  115.     virtual  OSAID                GetParentScript();
  116.  
  117.     virtual  void                WalkContextChain(short depth = 0);
  118.             
  119.              OSAID                 GetObjScript(void)  { return fAttachedScript; };
  120.                          
  121. protected:
  122.     OSAID                fAttachedScript;        // script ID of our script
  123.     TScriptableObject*    fParentObj;                // object that is current parent
  124.                             // if fParentObj is null, parent script is shared handlers
  125. };
  126.  
  127.  
  128. class TScriptAdministrator : public TScriptableObject    // <- because global vars script is
  129. {                                                        // 'attached' to this object
  130. public:
  131.     // Our constructor & destructor
  132.                             TScriptAdministrator();
  133.     virtual                 ~TScriptAdministrator();
  134.     
  135.     virtual        OSAError    GetAttachedScript(TScriptableObject* theObj,
  136.                                                 TScriptableObject* &useObject,
  137.                                                 TScriptableObject* &savedParent);
  138.     
  139.     virtual        OSAError    ReleaseAttachedScript(TScriptableObject* theObj,
  140.                                                     TScriptableObject* savedParent);
  141.  
  142.     virtual      OSAID        GetParentScript();
  143.                 
  144.                 void        LoadGlobalVariables(void);
  145.                 void        SaveGlobalVariables(void);
  146.                 void        RunStartupScript(void);
  147.  
  148.                 OSAError    DoScript(AEDesc *scriptDesc, AEDesc *resultDesc);
  149.  
  150.                 OSAError     SetScriptParent(ComponentInstance scriptingComponent,
  151.                                             OSAID contextID, OSAID newParentID);
  152.     
  153.                 void        SetSharedScript(OSAID theScriptID);
  154.                 OSAID        GetSharedScript(void) { return fSharedScript; };
  155.     
  156.                 OSAError    LoadScriptFromFile(FSSpec *fileSpec, OSAID *theScriptID);
  157.                 OSAError    SaveScriptToFile(FSSpec *fileSpec, OSAID theScriptID);
  158.                 
  159.                 Boolean        StartupScriptIsRunning(void) { return fStartupScriptRunning; }; 
  160.                 
  161. protected:                                        // inherited fAttachedScript is
  162.                                                 // the 'global variables' script.
  163.     OSAID                fSharedScript;            // 'shared handlers' script for app
  164.     FSSpec                fPrefsFileSpec;
  165.     Boolean                fStartupScriptRunning;    // we must not run it recursively
  166. };
  167.  
  168.  
  169.  
  170. // globals & global routines
  171.  
  172. extern    TScriptAdministrator*            gScriptAdministrator;
  173. extern    ComponentInstance                gScriptingComponent;
  174. extern    AEAddressDesc                    gSelfAddress;
  175. extern    ProcessSerialNumber                gSelfPSN;
  176.  
  177.  
  178. OSAError StartScriptAdministrator(void);
  179.  
  180. OSAError StopScriptAdministrator(Boolean saveGlobals);
  181.  
  182.  
  183. #endif
  184.